extends Marker3D

@export var target:Node3D # 手动连接，可以做
var had_target:bool = false
signal target_in
signal target_out


func _ready():
	#end的position是相对的，正好迎合AABB要的size
	#但是自己的位置必须是绝对的
	had_target = AABB(global_position, global_basis * $End.position).abs().has_point(target.global_position)

func _process(delta):
	# ps：这种检测区域自己也是可以移动的（甚至可以改变end位置）——没有另外设置变量，而是每次都重新计算
	if AABB(global_position, global_basis * $End.position).abs().has_point(target.global_position):
		if not had_target:
			target_in.emit()
		had_target = true
	else:
		if had_target:
			target_out.emit()
		had_target = false
